package week01

import "fmt"

/*功能: 第一题的算法实现

  @param AFull [int] A桶容量, 默认7
  @param BFull [int] B桶容量, 默认5

  @description: 验证算法步骤
   1 重复 2, 3 步骤两次
   2     将 B 装满
   3     将 B 中的水倒向 A (A满或B空为止)
   4 倒空A
   5 将 B 中剩的水倒向 A (A满或B空为止)
*/
func Question1(AFull, BFull int) (int, int) {

	agreement1(&AFull, &BFull) // 约定 A是大桶, B是小桶

	pailA, pailB := 0, 0
	var i int
	for i = 1; i <= 2; i++ {
		pailB = BFull
		if pailA+BFull <= AFull {
			pailA += pailB
		} else {
			remain := AFull - pailA // A 还能装的容量
			pailB -= remain
			pailA = AFull
		}
	}
	pailA -= pailA // 倒空 A
	pailA = pailB
	pailB = 0

	fmt.Printf("A=%d, B=%d\n", pailA, pailB)
	return pailA, pailB
}

// 约定: 第1个数大，第2个数小
func agreement1(a, b *int) {
	if *a < *b {
		tmp := *a
		*a = *b
		*b = tmp
	}
}
